package contracts.simpleCodingQuiz

import org.springframework.cloud.contract.spec.Contract

[Contract.make {
    request {
        method("GET")
        url("/api/simpleCodingQuizzes") {
            queryParameters {
                parameter("page", 1)
                parameter("pageSize", 10)
                parameter("type", "makerId")
                parameter("content", "5")
            }
        }
        headers {
            header('id', '21')
        }
    }
    response {
        status(200)
        body("""
        {
                "content":[
                    {
                        "definitionRepo": "https://github.com/Aceysx/java-collection-operator.git",
                        "description": "sss",
                        "evaluateScript": "1542019086473-bee0d2ed-e615-410e-97b7-06d84e3529e8.sh",
                        "homeworkName": "测试用的题目",
                        "jobMessage": "正在初始化,↵正在 clone 仓库,↵检测到无answer分支，将不会创建答案。↵开始检测测试脚本，↵检测到测试脚本，正在创建测试脚本,↵创建测试脚本成功。↵正在生成模版仓库，↵新建模版仓库地址是 github.com/recruiting-system/java-collection-operator-2018-11-12-10-37-55-147.git。↵出题成功↵",
                        "makerId": 5,
                        "quizGroupId": 2,
                        "stackId": 4,
                        "status": 2,
                        "templateRepository": "https://github.com/recruiting-system/java-collection-operator-2018-11-12-10-37-55-147.git"
                    }
                ],
                "totalElements": 3,
                "totalPages": 1,
                "size": 10,
                "number": 0
            }
            """)
        bodyMatchers {
            jsonPath('$.content[*].definitionRepo', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].description', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].evaluateScript', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].homeworkName', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].jobMessage', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].makerId', byRegex(number()))
            jsonPath('$.content[*].quizGroupId', byRegex(number()))
            jsonPath('$.content[*].stackId', byRegex(number()))
            jsonPath('$.content[*].status', byRegex(number()))
            jsonPath('$.content[*].templateRepository', byRegex("[\\s\\S]+"))
            jsonPath('$.totalElements', byRegex(number()))
            jsonPath('$.totalPages', byRegex(number()))
            jsonPath('$.size', byRegex(number()))
            jsonPath('$.number', byRegex(number()))
        }
        headers {
            contentType(applicationJsonUtf8())
        }
    }
}]
